# -*- coding: utf-8 -*-
# @Author: shj
# @Date: 2020-04-10 11:14:04
# @LastEditTime: 2020-04-10 11:33:34
# @LastEditors: shj
# @Description: 穷举法解决百钱百鸡、五人分鱼
# @FilePath: /python3/algorithms/Exhaustive.py
"""
穷举法 - 又称为暴力破解法，对所有的可能性进行验证，直到找到正确答案。
"""
# 公鸡5元一只 母鸡3元一只 小鸡1元三只
# 用100元买100只鸡 问公鸡/母鸡/小鸡各多少只


def hundured(count=100):
    '''百钱百鸡问题'''
    # 公鸡
    for rooster in range(21):
        # 母鸡
        for hen in range(34):
            # 小鸡
            chick = count - rooster - hen
            if 5 * rooster + 3 * hen + chick // 3 == 100 and chick % 3 == 0:
                print(rooster, hen, chick)


# A、B、C、D、E五人在某天夜里合伙捕鱼 最后疲惫不堪各自睡觉
# 第二天A第一个醒来 他将鱼分为5份 扔掉多余的1条 拿走自己的一份
# B第二个醒来 也将鱼分为5份 扔掉多余的1条 拿走自己的一份
# 然后C、D、E依次醒来也按同样的方式分鱼 问他们至少捕了多少条鱼
def five(fish=6):
    """五人分鱼"""
    while True:
        total = fish
        enough = True
        for _ in range(5):
            if (total - 1) % 5 == 0:
                total = (total - 1) // 5 * 4
            else:
                enough = False
                break
        if enough:
            print(fish)
            break
        fish += 5


hundured()
five()